HTTP Servlet হল একটি জাভা প্রোগ্রাম যা HttpServlet ক্লাসের এক্সটেনশন হিসেবে কাজ করে এবং HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডেল করে। এটি ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। HTTP Servlet এর সাহায্যে ওয়েব সার্ভারের সাথে যোগাযোগ করা হয় এবং ওয়েব পেজ বা অন্য কোন ডেটা ক্লায়েন্টকে রিটার্ন করা হয়। HTTP Servlet সাধারণত doGet(), doPost(), doPut() বা doDelete() মেথডের মাধ্যমে HTTP রিকোয়েস্টগুলো প্রক্রিয়া করে।
এই উদাহরণে, আমরা একটি সাধারণ HTTP Servlet তৈরি করব যা HTTP GET রিকোয়েস্ট হ্যান্ডেল করবে এবং "Hello, World!" মেসেজ রিটার্ন করবে।
1. HTTP Servlet তৈরি
1.1 Servlet Class তৈরি করা
প্রথমে একটি HttpServlet ক্লাস তৈরি করতে হবে যা doGet() মেথড ওভাররাইড করে এবং HTTP GET রিকোয়েস্টে একটি সিম্পল রেসপন্স দেয়।
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet {
// doGet() মেথড যা HTTP GET রিকোয়েস্ট হ্যান্ডেল করে
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// রেসপন্সের কনটেন্ট টাইপ সেট করা
response.setContentType("text/html");
// আউটপুট লেখার জন্য PrintWriter ব্যবহার করা
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
এখানে:
- doGet(): এই মেথডটি HTTP GET রিকোয়েস্ট হ্যান্ডল করে। এখানে, PrintWriter ব্যবহার করে HTML আউটপুট তৈরি করা হয়েছে যা "Hello, World!" মেসেজ প্রদর্শন করবে।
2. Servlet মেপিং
একটি Servlet তৈরি করার পর, এটি ওয়েব কন্টেইনারে (যেমন Apache Tomcat) মেপিং করতে হয়, যাতে ওয়েব অ্যাপ্লিকেশনের মাধ্যমে এটি অ্যাক্সেস করা যায়। Servlet মেপিং সাধারণত web.xml ফাইল বা @WebServlet অ্যানোটেশন দ্বারা করা হয়।
2.1 web.xml কনফিগারেশন
এটি ওয়েব অ্যাপ্লিকেশনটির WEB-INF ফোল্ডারে অবস্থিত। এখানে সার্ভলেটের কনফিগারেশন এবং URL প্যাটার্ন মাপিং করা হয়।
<web-app>
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.example.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
এখানে:
- : সার্ভলেটের নাম এবং : সার্ভলেটের পূর্ণ ক্লাস পাথ।
- /hello:
/helloURL এ রিকোয়েস্ট আসলে এই সার্ভলেটটি কল হবে।
2.2 @WebServlet অ্যানোটেশন
Java 6 থেকে, @WebServlet অ্যানোটেশন ব্যবহার করে সার্ভলেটের কনফিগারেশন এবং মেপিং করা যেতে পারে। এটি web.xml ফাইলের পরিবর্তে সরাসরি কোডে সার্ভলেট কনফিগারেশন দেয়।
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
}
এখানে:
- @WebServlet("/hello"):
/helloURL প্যাটার্নে রিকোয়েস্ট আসলে এই সার্ভলেটটি কল হবে।
3. Servlet Deployment
3.1 Servlet Container
Servlet Container বা Servlet Engine হল একটি পরিবেশ যা সার্ভলেটকে রান করতে সহায়তা করে। জনপ্রিয় সার্ভলেট কনটেইনার যেমন Apache Tomcat সার্ভলেট এবং JSP প্রোগ্রাম রান করার জন্য ব্যবহৃত হয়।
3.2 Servlet Deployment Steps
- Servlet Class তৈরি করুন: উপরের Servlet কোডটি একটি
.javaফাইলে লিখুন। - Servlet Class কম্পাইল করুন:
javac HelloWorldServlet.java - web.xml কনফিগারেশন বা @WebServlet অ্যানোটেশন ব্যবহার করুন: URL প্যাটার্ন সহ কনফিগারেশন করুন।
- Servlet কনটেইনারে ডিপ্লয় করুন: Servlet ক্লাস এবং web.xml ফাইলটি Tomcat বা অন্য কোন Servlet কনটেইনারে ডিপ্লয় করুন। সাধারণত এটি WEB-INF/classes ফোল্ডারে রাখা হয়।
- Servlet কনটেইনার চালু করুন: Tomcat চালু করুন এবং ব্রাউজারে গিয়ে
http://localhost:8080/your-web-app-name/helloURL এ রিকোয়েস্ট পাঠান।
4. Servlet Output
যখন আপনি ব্রাউজারে http://localhost:8080/hello URLটি প্রবেশ করবেন, তখন সার্ভলেটটি HTTP GET রিকোয়েস্ট গ্রহণ করবে এবং "Hello, World!" মেসেজ সহ একটি HTML পেজ রিটার্ন করবে।
আউটপুট:
Hello, World!
এটি ওয়েব পেজে "Hello, World!" মেসেজ প্রদর্শন করবে।
5. Servlet Lifecycle
সার্ভলেটের একটি নির্দিষ্ট জীবনচক্র থাকে, যা Servlet Container পরিচালনা করে। সার্ভলেট জীবনচক্রের তিনটি প্রধান ধাপ রয়েছে:
- Initialization: সার্ভলেট প্রথমবার কনটেইনারে ইনস্ট্যান্সিয়েট হয় এবং init() মেথড কল হয়।
- Request Handling: সার্ভলেট কনটেইনার HTTP রিকোয়েস্ট গ্রহণ করে এবং service() মেথড কল করে, যা উপযুক্ত HTTP মেথড (যেমন
doGet(),doPost()) কল করে। - Destruction: যখন সার্ভলেট কনটেইনার থেকে সরিয়ে ফেলা হয়, তখন destroy() মেথড কল হয়।
উদাহরণ:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class LifecycleServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("Servlet is initialized");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("Servlet is handling the request");
}
@Override
public void destroy() {
System.out.println("Servlet is destroyed");
}
}
এখানে:
- init(): সার্ভলেট শুরু হলে এটি একবার কল হবে।
- destroy(): সার্ভলেট ধ্বংস হলে এটি কল হবে।
সারাংশ
HTTP Servlet হল একটি জাভা প্রোগ্রাম যা HTTP রিকোয়েস্ট এবং রেসপন্স হ্যান্ডেল করে ওয়েব সার্ভারে কাজ করে। doGet() মেথডের মাধ্যমে সার্ভলেট HTTP GET রিকোয়েস্ট হ্যান্ডেল করে এবং HTML রেসপন্স রিটার্ন করে। Servlet Mapping web.xml অথবা @WebServlet অ্যানোটেশন ব্যবহার করে করা হয়। সার্ভলেট কনটেইনার (যেমন Tomcat) এ সার্ভলেট ডিপ্লয় করার পর, আপনি এটি ওয়েব ব্রাউজারে অ্যাক্সেস করতে পারবেন। সার্ভলেটের জীবনচক্রে init(), doGet(), এবং destroy() মেথডগুলির ভূমিকা রয়েছে, যা সার্ভলেটের ইনিশিয়ালাইজেশন, রিকোয়েস্ট হ্যান্ডলিং এবং ধ্বংস কাজগুলি সম্পন্ন করে।
Read more